1. Field of the Invention
The present invention generally relates to allocation of resources in a computer system, and more specifically to allocation of various computer resources in a virtual execution environment.
2. Description of the Related Art
Modern computer systems make extensive use of virtual execution environments also called “virtual machines.” In general terms, a virtual machine is software that creates an environment between the computer platform and the end user in which the end user can operate software.
For example, the concept of virtual machine may be used to create a number of different identical execution environments on a single computer, each of which exactly emulates the host computer. This provides each user with the illusion of having an entire computer, but one that is their “private” machine, isolated from other users, all on a single physical machine. In another example, virtual machines may be used to isolate the application being used by the user from the computer. Because versions of the virtual machine are written for various computer platforms, any application written for the virtual machine can be operated on any of the platforms, instead of having to produce separate versions of the application for each computer and operating system. Additionally, because a virtual execution environment has no contact with the operating system or with other virtual execution environments, there is little possibility of an application executing in one such environment damaging other files or applications.
To preserve the aforementioned logical separation of different virtual executions environments, each virtual machine must be provided with its own logical storage resource. If, for instance, 10,000 virtual machines are being executed in a host computer and each virtual machine requires a storage device (a logical storage unit), then 10,000 logical storage devices must be provided i.e., one storage device (logical unit) for each virtual machine.
In the widely deployed Fibre Channel storage connectivity interface, theoretically, more than one million logical storage units can be connected to a host computer. In reality, however, many of the existing implementations of the Fibre Channel host bus adapters (HBA) and the associated device driver software are able to accommodate only between 100 and 200 logical storage units. As a result, in practice, only between 100 and 200 logical storage units may be connected to the host computer. Consequently, even if a large number of virtual machines can be configured to execute on the same computer hardware, the required separate storage devices may not be available to each running virtual machine. Because each virtual machine requires a separate storage area (logical unit), this in turn limits the number of virtual machines that may be executed by a single computer.
U.S. Pat. No. 6,779,083 to Ito et al., incorporated herein by reference, describes a method for enabling access to logical storage devices (units) from a specified group of host computers. In accordance with the described method, each host computer is assigned a unique identifier of the Fibre Channel HBA such as WWN (World Wide Name). Based on this identifier, the described system is able to determine, which host computer accesses each of the logical units. This method, however, is not applicable to an architecture, wherein a single host computer executes multiple virtual machines. Specifically, this method cannot be used in the context of virtualization environment of a single computer because the data access requests to the storage system from all virtual machines come with the same WWN information i.e., the WWN of the host computer.
What is needed is a system that would permit a single host computer to execute a desired number of virtual machines, without constraints due to design limitations of various system components such as the Fibre Channel HBA as well as its accompanying device driver software.